const app = getApp()

Page({
  data: {
    phone: '',
    code: '',
    cooldown: 0,
    agreed: false,
    isWechatLogin: false,
    redirect: '/pages/index/index'  // 默认跳转页面
  },

  onLoad(options) {
    // 保存跳转页面
    if (options.redirect) {
      this.setData({
        redirect: decodeURIComponent(options.redirect)
      })
    }
    
    // 检查是否已登录
    const token = wx.getStorageSync('access_token')
    if (token) {
      this.navigateBack()
    }
  },

  // 发送验证码
  sendVerificationCode() {
    if (this.data.cooldown > 0) return
    
    if (!this.data.phone) {
      wx.showToast({
        title: '请输入手机号',
        icon: 'none'
      })
      return
    }

    if (!/^1[3-9]\d{9}$/.test(this.data.phone)) {
      wx.showToast({
        title: '手机号格式不正确',
        icon: 'none'
      })
      return
    }

    wx.request({
      url: `${app.globalData.baseUrl}/users/send-code/`,
      method: 'POST',
      data: {
        phone: this.data.phone
      },
      success: (res) => {
        if (res.statusCode === 200) {
          wx.showToast({
            title: '验证码已发送',
            icon: 'success'
          })
          // 开始倒计时
          this.setData({ cooldown: 60 })
          this.startCooldown()
        } else {
          wx.showToast({
            title: '发送失败',
            icon: 'none'
          })
        }
      }
    })
  },

  // 倒计时
  startCooldown() {
    if (this.data.cooldown <= 0) return
    
    setTimeout(() => {
      this.setData({
        cooldown: this.data.cooldown - 1
      })
      this.startCooldown()
    }, 1000)
  },

  // 手机号登录
  login() {
    if (!this.data.agreed) {
      wx.showToast({
        title: '请同意用户协议和隐私政策',
        icon: 'none'
      })
      return
    }

    if (!this.data.phone || !this.data.code) {
      wx.showToast({
        title: '请填写完整信息',
        icon: 'none'
      })
      return
    }

    wx.request({
      url: `${app.globalData.baseUrl}/users/login/`,
      method: 'POST',
      data: {
        phone: this.data.phone,
        code: this.data.code
      },
      success: (res) => {
        console.log('手机号登录结果:', res)
        if (res.statusCode === 200) {
          // 保存token
          wx.setStorageSync('access_token', res.data.access)
          wx.setStorageSync('refresh_token', res.data.refresh)
          // 保存用户信息
          app.globalData.userInfo = res.data.user;
          this.navigateBack();
        } else {
          console.error('登录失败:', res);
          wx.showToast({ title: res.data.error || '验证码错误', icon: 'none' });
        }
      },
      fail: (error) => {
        console.error('请求失败:', error)
        wx.showToast({
          title: '网络错误',
          icon: 'none'
        })
      }
    })
  },

  // 微信登录
  handleGetPhoneNumber(e) {
    console.log('开始微信登录流程')
    if (!this.data.agreed) {
      wx.showToast({
        title: '请同意用户协议和隐私政策',
        icon: 'none'
      })
      return
    }

    if (e.detail.errMsg !== 'getPhoneNumber:ok') {
      console.error('获取手机号失败:', e.detail.errMsg)
      wx.showToast({
        title: '获取手机号失败',
        icon: 'none'
      })
      return
    }

    // 获取code
    wx.login({
      success: (loginRes) => {
        console.log('wx.login成功，获取到code')
        if (loginRes.code) {
          wx.request({
            url: `${app.globalData.baseUrl}/users/auth/wechat-login/`,
            method: 'POST',
            data: {
              code: loginRes.code,
              encrypted_data: e.detail.encryptedData,
              iv: e.detail.iv
            },
            success: (res) => {
              console.log('服务器返回结果:', res)
              if (res.statusCode === 200) {
                console.log('登录成功，保存token和用户信息')
                // 保存token
                wx.setStorageSync('access_token', res.data.access)
                wx.setStorageSync('refresh_token', res.data.refresh)
                // 保存用户信息
                app.globalData.userInfo = res.data.user
                console.log('开始页面跳转')
                this.navigateBack()
              } else {
                console.error('登录失败，状态码:', res.statusCode, '错误信息:', res.data)
                wx.showToast({
                  title: res.data.error || '登录失败',
                  icon: 'none'
                })
              }
            },
            fail: (error) => {
              console.error('请求失败:', error)
              wx.showToast({
                title: '网络错误',
                icon: 'none'
              })
            }
          })
        } else {
          console.error('wx.login失败，没有code')
        }
      },
      fail: (error) => {
        console.error('wx.login失败:', error)
        wx.showToast({
          title: '微信登录失败',
          icon: 'none'
        })
      }
    })
  },

  // 切换协议同意状态
  toggleAgreement() {
    this.setData({
      agreed: !this.data.agreed
    })
  },

  // 显示用户协议
  showUserAgreement() {
    wx.navigateTo({
      url: '/pages/agreement/agreement?type=user'
    })
  },

  // 显示隐私政策
  showPrivacyPolicy() {
    wx.navigateTo({
      url: '/pages/agreement/agreement?type=privacy'
    })
  },

  // 返回上一页或首页
  navigateBack() {
    console.log('执行页面跳转')
    const pages = getCurrentPages()
    console.log('当前页面栈:', pages)
    
    // 如果是从其他页面跳转来的，使用switchTab而不是navigateBack
    if (this.data.redirect.startsWith('/pages/order-list/') || 
        this.data.redirect.startsWith('/pages/profile/') ||
        this.data.redirect.startsWith('/pages/index/')) {
      console.log('使用switchTab跳转到:', this.data.redirect)
      wx.switchTab({
        url: this.data.redirect,
        success: () => console.log('跳转成功'),
        fail: (error) => console.error('跳转失败:', error)
      })
    } else {
      console.log('使用redirectTo跳转到:', this.data.redirect)
      wx.redirectTo({
        url: this.data.redirect,
        success: () => console.log('跳转成功'),
        fail: (error) => console.error('跳转失败:', error)
      })
    }
  }
})